package com.nbcio.iot.service;

import cn.hutool.core.lang.tree.Tree;
import com.nbcio.iot.domain.bo.IotProductCategoryBo;
import com.nbcio.iot.domain.vo.IotProductCategoryVo;

import java.util.List;

/**
 * 物联网产品分类服务接口
 */
public interface IIotProductCategoryService {

    /**
     * 查询产品分类列表
     */
    List<IotProductCategoryVo> selectCategoryList(IotProductCategoryBo bo);

    /**
     * 查询产品分类树结构信息
     */
    List<Tree<Long>> selectCategoryTreeList(IotProductCategoryBo bo);

    /**
     * 构建前端所需要下拉树结构
     */
    List<Tree<Long>> buildCategoryTreeSelect(List<IotProductCategoryVo> categories);

    /**
     * 根据分类ID查询信息
     */
    IotProductCategoryVo selectCategoryById(Long categoryId);

    /**
     * 是否存在分类子节点
     */
    boolean hasChildByCategoryId(Long categoryId);

    /**
     * 校验分类名称是否唯一
     */
    boolean checkCategoryNameUnique(IotProductCategoryBo bo);

    /**
     * 校验分类编码是否唯一
     */
    boolean checkCategoryCodeUnique(IotProductCategoryBo bo);

    /**
     * 新增产品分类
     */
    Boolean insertCategory(IotProductCategoryBo bo);

    /**
     * 修改产品分类
     */
    Boolean updateCategory(IotProductCategoryBo bo);

    /**
     * 删除产品分类
     */
    Boolean deleteCategoryByIds(List<Long> categoryIds);
} 